今天我們來看一下loss曲線怎樣才是符合預期的結果,以及我們第十天的loss曲線如何
基本上我們預期loss曲線最後能穩定收斂到某一個值,一般在前半段loss曲線會快速下降,後面會稍微震盪,但最後會穩定在某個值,依照這個標準來看我們第十天的training loss是非常不錯的,那麼依照loss曲線分成幾種情況:
以上狀況是需要train跟val test一起來看,會發現第十天的val loss曲線大概在9k過後就往上了,代表在9k之後就有點overfitting了,所以通常會取9k前的ckpt來用。
我們來看看如果是overfitting的圖會長怎樣吧,這裡拿我最近training的模型來說,可以發現在將近16k模型就overfitting了,這時我去看我的資料集,發現某一類的資料特別少,所以導致那一類在辨識時效果不好,所以每類資料平衡也是很重要的!!
通常我自己遇到的都是overfitting居多,但要解決overfitting又不是那麼容易,主要是有很多原因可能會導致overfitting,以下是我遇到過的三種形況:
嘗試其他model這就屬於研究的議題,怎麼樣的model適合做這項任務,通常都是看論文研究或看github上主流是用哪一套。
如果是資料太少就只能收集資料,比較好取得的就音檔, 文字,這些可以透過爬蟲取得,但沒有答案。
另外有些資料不是那麼好取得,比如說乳房腫瘤的標記資料,這些需要高專業度的放射科醫師才能標記,我們一般人根本沒辦法,所以通常會採data augmentation,或是模擬或合成的資料的方式來做。
以下舉幾個我看過增加資料的例子:
今天就先到這囉~ 今天比較偏向觀念,但這些觀念或許可以幫助你想到如何解決問題。
還有一種比較少見的曲線是梯度爆炸,源自於 Optimizer 的設定不當(例如 LR 太高之類的),最近剛好有遇到,借串分享一下
藍色曲線遇到梯度爆炸後,後續訓練難以收斂,而紅色曲線則是正常收斂